# coding:utf8
"""
main.py
"""
import os.path
import random
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)


class IndexHandler(tornado.web.RequestHandler):
	def get(self):
		self.render('index_main.html')


class MungedPageHandler(tornado.web.RequestHandler):
	def map_by_first_letter(self, text):
		mapped = dict()
		for line in text.split('\r\n'):
			for word in [x for x in line.split(' ') if len(x) > 0]:
				if word[0] not in mapped: mapped[word[0]] = []
				mapped[word[0]].append(word)
		return mapped

	def post(self):
		source_text = self.get_argument('source')
		text_to_change = self.get_argument('change')
		source_map = self.map_by_first_letter(source_text)
		change_lines = text_to_change.split('\r\n')
		self.render('munged.html', source_map=source_map, change_lines=change_lines,
				choice=random.choice)

if __name__ == '__main__':
	handlers_list = [
		(r'/', IndexHandler), 
		(r'/poem', MungedPageHandler)
		]
	templates_fp = os.path.join(os.path.dirname(__file__), "templates")
	static_fp = os.path.join(os.path.dirname(__file__), "static")
	tornado.options.parse_command_line()
	app = tornado.web.Application(
		handlers=handlers_list,
		template_path=templates_fp,
		static_path=static_fp,
		# debug=True
	)
	http_server = tornado.httpserver.HTTPServer(app)
	http_server.listen(options.port)
	tornado.ioloop.IOLoop.instance().start()


"""
main.py
"""